Major chip manufactureres, such as INTEL® and AMD®, have introduced hardware virtualization support features into their processors. At present, such hardware virtualization support features comprise, for example, hardware-based virtualization extensions that overcome the classical virtualization limitations of the x86 architecture. Products including these extensions are known as INTEL VT® and AMD-V®. Most modern x86 server-based and desktop-based processors presently include hardware virtualization support via these extensions. Software virtual machine technologies such as VIRTUAL PC® and VIRTUAL SERVER® made by MICROSOFT® Corp., and PARALLELS WORKSTATION® made by PARALLELS®, Inc., can leverage such hardware virtualization support features to make virtual machine technologies run faster.
However, the use of hardware virtualization support features can slow down, rather than speed up device access by a virtual machine in certain scenarios. For example, some previous virtual machine software made for previous x86 systems (those not including hardware virtualization support) used binary translation and/or patching to make code suitable for execution in a virtual machine. This was because the old virtual machine environment was not capable of perfectly representing the virtual machine—requiring a few changes to the child code to make the child code operate correctly in the virtual machine environment. While cumbersome, the binary translation and/or patching techniques were capable of achieving acceptably fast access to devices.
In contrast, present x86 virtual machine software technologies can leverage newer hardware virtualization features, as described above, and have no need for binary translation or patching because unmodified code can be made to run correctly in a virtual machine. Because there is no need for binary translation in general, the device access efficiency gains associated with the previous arrangement are lost. A different solution for speeding up device accesses is needed for systems comprising hardware virtualization support.